package com.yunke.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yunke.entity.YunkeBanner;

import java.util.List;

/**
 * 轮播图服务接口
 * 
 * @author yunke
 * @since 1.0.0
 */
public interface YunkeBannerService extends IService<YunkeBanner> {

    /**
     * 创建轮播图
     */
    boolean createBanner(YunkeBanner banner);

    /**
     * 更新轮播图
     */
    boolean updateBanner(YunkeBanner banner);

    /**
     * 删除轮播图
     */
    boolean deleteBanner(Long id);

    /**
     * 批量删除轮播图
     */
    boolean deleteBanners(List<Long> ids);

    /**
     * 分页查询轮播图列表
     */
    IPage<YunkeBanner> getBannerPage(Integer current, Integer size,
                                    Integer bannerType, String displayPosition,
                                    String bannerTitle, Boolean isEnabled);

    /**
     * 根据ID查询轮播图详情
     */
    YunkeBanner getBannerById(Long id);

    /**
     * 根据位置查询轮播图列表
     */
    List<YunkeBanner> getBannersByPosition(String displayPosition, Integer targetUser, Boolean isEnabled);

    /**
     * 根据类型查询轮播图列表
     */
    List<YunkeBanner> getBannersByType(Integer bannerType, Boolean isEnabled);

    /**
     * 查询首页轮播图
     */
    List<YunkeBanner> getHomeBanners(Integer targetUser);

    /**
     * 启用轮播图
     */
    boolean enableBanner(Long id);

    /**
     * 禁用轮播图
     */
    boolean disableBanner(Long id);

    /**
     * 批量更新轮播图状态
     */
    boolean updateBannerStatus(List<Long> ids, Integer status);

    /**
     * 批量更新轮播图启用状态
     */
    boolean updateBannerEnabled(List<Long> ids, Boolean isEnabled);

    /**
     * 更新轮播图点击统计
     */
    boolean updateClickCount(Long id);

    /**
     * 更新轮播图浏览统计
     */
    boolean updateViewCount(Long id);

    /**
     * 统计轮播图数量
     */
    long countBanners(Integer bannerType, String displayPosition, Boolean isEnabled);

    /**
     * 查询过期轮播图
     */
    List<YunkeBanner> getExpiredBanners();

    /**
     * 自动禁用过期轮播图
     */
    boolean disableExpiredBanners();
} 